package com.zzyl.service;


import com.zzyl.base.ResponseResult;
import com.zzyl.dto.LeaveDto;
import com.zzyl.entity.Leave;
import com.zzyl.vo.retreat.TasVo;

import java.time.LocalDateTime;

public interface LeaveService {
    /**
     * 请假申请
     * @param leave
     */
    public ResponseResult createLeave(Leave leave);

    /**
     * 查询请假信息
     * @param      * @param status
     * @return
     */
    public ResponseResult<TasVo> getLeave(String leaveNo, String assigneeId,
                                          Integer flowStatus, String taskId);

    /**
     * 提交请假申请
     *  -护理组主管审核
     *  -护理部部长审核
     * @param leaveDto
     * @return
     */
    ResponseResult submitRetreat(LeaveDto leaveDto);

    /**
     * 审核拒绝
     * @param leaveNo  退住单code
     * @param reject   拒绝原因
     * @return
     */
    ResponseResult auditReject(String leaveNo, String reject, String taskId);

    /**
     * 请假管理列表查询
     * @param leaveNo        请假code
     * @param name           老人姓名
     * @param idCardNo       身份证号
     * @param start          开始时间
     * @param end            结束时间
     * @param pageNum        当前页
     * @param pageSize       每页显示条数
     * @param userId         用户id
     * @return
     */
    ResponseResult selectByPage(String leaveNo, String name,
                                String idCardNo, LocalDateTime start,
                                LocalDateTime end, Integer pageNum,
                                Integer pageSize, Long userId);


    /**
     * 撤回
     * @param leaveNo
     * @param flowStatus
     * @return
     */
    ResponseResult revocation(String leaveNo, Integer flowStatus, String taskId);

    /**
     * 撤销驳回
     * @param leaveNo
     * @return
     */
    ResponseResult disapprove(String leaveNo, String message, String taskId);


    /**
     * 撤销
     * @param leaveNo   退住编码
     * @return
     */
    ResponseResult cancel(String leaveNo, String taskId);
}